SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTAMAR_NCCA_I01]
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : OFISIS                 --*/  
/*---Sistema              : Tesoreria                  --*/  
/*---M÷dulo               : Empresa                    --*/  
/*---Programa             : Anulaci¸n Aplicaci¸n       --*/  
/*---                       Notas Credito con Facturas --*/  
/*---Script               : SP_TTAMAR_NCCA_I01.SQL--*/  
/*---Nombre SP            : SP_TTAMAR_NCCA_D01    --*/  
/*---Desarrollado por     : Eduardo Vivar Pomiano      --*/  
/*---Fecha Creaci÷n       : 25/02/2000                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versi÷n              : 7.0                        --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---ModIficado 1 por     : Maribel Julca Rodriguez    --*/  
/*---Fecha ModIficaci©n   : 21/04/2005                 --*/   
/*---Detalle ModIficaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/  
/*-------------------------------------------------------*/  
/*---------------------------------------------------------*/
/*---Modificado 2 por     : Carlos Marquez Escobar       --*/
/*---Fecha Modificaci÷n   : 06/10/2005                 	 --*/
/*---Detalle Modificaci÷n : Manejo de Extornos			 --*/
/*---------------------------------------------------------*/
/*-------------------------------------------------------*/  
/*---Comentarios                                       --*/  
/*---                                                  --*/  
/*---                                                  --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TTAMAR_NCCA_I01                 --*/  
/*---Grant all on SP_TTAMAR_NCCA_I01 to public    --*/   
/*---SP_TTAMAR_NCCA_I01   '99','sa', '00000001','10012198','900','01/02/2000'                  --*/  
/*-------------------------------------------------------*/  
 @ISCO_EMPR       TD_VC_002,   
 @ISCO_USUA_MODI  TD_VC_008,  
 @ISCO_UNID_CONC  TD_VC_003,  
 @ISNU_AMAR       TD_VC_008,   
 @ISCO_CLIE       TD_VC_020,  
 @ISCO_TIPO_OPER  TD_VC_003,   
 @IDFE_ANUL       TD_DT_001,  
 @IDFE_AMAR       TD_DT_001
	As
Declare 
	@CSTI_DOCU_DEST		TD_VC_003,   
	@CSNU_DOCU_DEST		TD_VC_020,    
	@CNIM_COBR_CDES		TD_NU_016_004,   
	@VNIM_TOTA_DOCU		TD_NU_016_004,   
	@CSCO_ENTI			TD_VC_020,   
	@CSTI_DOCU_ORIG		TD_VC_003,   
	@CSNU_DOCU_ORIG		TD_VC_020,   
	@CNIM_COBR_CORI		TD_NU_016_004,    
	@VSCO_MONE			TD_VC_003,  
	@VSCO_MONE_DOCU		TD_VC_003,  
	@VNFA_TIPO_CAMB		TD_NU_015_006,  
	@VSCO_MONE_DEFA		TD_VC_003,  
	@VSCO_MONE_EXTR		TD_VC_003,  
	@OSTI_DOCU_LETR		TD_VC_003,  
	@VSCO_TIPO_INAN		TD_VC_003,     
	@VSST_GEAS_ANUL		TD_VC_001,  
	@VSCO_TIPO_OPE1		TD_VC_003,

	@OSNU_ASTO			TD_VC_010,
	@VSST_INTE_BACH		TD_VC_001,
	@VSST_ASTO_RESU		TD_VC_001,
	@VSTI_OPNI_CARG		TD_VC_001,
	@VSTI_OPNI_ABON		TD_VC_001
  /***  PRIMERO LIBERA DOCUMENTOS  DESTINOS  ***/    
  
 Begin Tran SP_TTAMAR_NCCA_D01  
	
	EXEC SP_TTDOCU_CNTB_Q02 6, @OSTI_DOCU_LETR OUTPUT        
	
	Declare CU_TTAMAR_NCCA_D01 Cursor   
	FOR  
	Select CO_ENTI, CO_TIDO_DEST , NU_DOCU_DEST , Isnull (IM_COBR_CDES , 0)  
	From   TDAMAR_NCCL  
	Where  CO_EMPR = @ISCO_EMPR  
	AND    CO_UNID_CONC = @ISCO_UNID_CONC  
	AND    NU_AMAR  = @ISNU_AMAR   
	AND    FE_AMAR  = @IDFE_AMAR   

	AND    CO_TIDO_ORIG is NULL   
	AND    NU_DOCU_ORIG is NULL   
	
	
	Open CU_TTAMAR_NCCA_D01  
	Fetch  CU_TTAMAR_NCCA_D01 Into @CSCO_ENTI, @CSTI_DOCU_DEST , @CSNU_DOCU_DEST , @CNIM_COBR_CDES  
	
	While (@@Fetch_STATUS = 0)  
	Begin  
		If (@@Fetch_STATUS < 0)  
		Begin  
			--  RAISERROR 20001 "FIN DE ARCHIVO"  
			Close CU_TTAMAR_NCCA_D01  
			Deallocate CU_TTAMAR_NCCA_D01  
			Return              
		End  
		
		If @CSTI_DOCU_DEST != @OSTI_DOCU_LETR  
			Update TMDOCU_CLIE   
			Set IM_PAGA = Isnull(IM_PAGA,0) - @CNIM_COBR_CDES , CO_ESTA_DOCU = 'ACT',  
			CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()  
			Where CO_EMPR = @ISCO_EMPR   
			AND   CO_CLIE = @CSCO_ENTI    
			AND   CO_TIPO_DOCU = @CSTI_DOCU_DEST   
			AND   NU_DOCU_CLIE = @CSNU_DOCU_DEST  
		Else  
			Update TMLETR_CLIE   
			Set IM_PAGA = Isnull(IM_PAGA,0) - @CNIM_COBR_CDES , CO_ESTA_DOCU = 'ACE',  
			CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()  
			Where CO_EMPR = @ISCO_EMPR   
			AND   CO_CLIE = @CSCO_ENTI   
			AND   NU_LETR_CLIE = @CSNU_DOCU_DEST  
		
		If @@error <> 0  
		Begin  
			Close CU_TTAMAR_NCCA_D01  
			Deallocate CU_TTAMAR_NCCA_D01  
			RollBack Tran SP_TTAMAR_NCCA_D01
			Return  
		End  
		
		Fetch  CU_TTAMAR_NCCA_D01 Into @CSCO_ENTI, @CSTI_DOCU_DEST , @CSNU_DOCU_DEST , @CNIM_COBR_CDES  
		End   
		
		Close CU_TTAMAR_NCCA_D01  
		Deallocate CU_TTAMAR_NCCA_D01  
		
		/* ********* LIBERA DOCUMENTOS ORIGENES  ********** */    
		
		Declare CU_TTAMAR_NCCA_D01 Cursor   
		FOR  
		Select CO_ENTI, CO_TIDO_ORIG , NU_DOCU_ORIG , IM_COBR_CORI  
		From   TDAMAR_NCCL  
		Where  CO_EMPR = @ISCO_EMPR  
		AND    CO_UNID_CONC = @ISCO_UNID_CONC  
		AND    NU_AMAR = @ISNU_AMAR  
		AND    FE_AMAR  = @IDFE_AMAR  
		AND    CO_TIDO_DEST is NULL   
		AND    NU_DOCU_DEST is NULL      
		
		Open CU_TTAMAR_NCCA_D01  
		Fetch  CU_TTAMAR_NCCA_D01 Into @CSCO_ENTI, @CSTI_DOCU_ORIG , @CSNU_DOCU_ORIG , @CNIM_COBR_CORI  
		
		While (@@Fetch_STATUS = 0)  
		Begin  
			If (@@Fetch_STATUS < 0)  
			Begin  
				--  RAISERROR 20001 "FIN DE ARCHIVO"  
				Close CU_TTAMAR_NCCA_D01  
				Deallocate CU_TTAMAR_NCCA_D01  
				Return  
			End  
		
		
			Update TMDOCU_CLIE   
			Set IM_PAGA = Isnull(IM_PAGA,0) - @CNIM_COBR_CORI , CO_ESTA_DOCU = 'ACT',  
			CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()  
			Where CO_EMPR = @ISCO_EMPR   
			AND   CO_CLIE = @CSCO_ENTI   
			AND   CO_TIPO_DOCU = @CSTI_DOCU_ORIG   
			AND   NU_DOCU_CLIE = @CSNU_DOCU_ORIG  
			
			If @@error <> 0  
			Begin  
				Close CU_TTAMAR_NCCA_D01  
				Deallocate CU_TTAMAR_NCCA_D01  
				RollBack Tran SP_TTAMAR_NCCA_D01
				Return  
			End  
		
		Fetch  CU_TTAMAR_NCCA_D01 Into @CSCO_ENTI, @CSTI_DOCU_ORIG , @CSNU_DOCU_ORIG , @CNIM_COBR_CORI  
	
	End   
	
	Close CU_TTAMAR_NCCA_D01  
	Deallocate CU_TTAMAR_NCCA_D01  
	
	Select @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL  
	From   TMPARA_TESO   
	Where  CO_EMPR = @ISCO_EMPR  
	
	If @VSST_GEAS_ANUL = 'N'  
		Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_INAN  
	Else      
		Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER  
	
	-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --
	If  @IDFE_AMAR < @IDFE_ANUL And Month( @IDFE_AMAR ) != Month( @IDFE_ANUL )
		Update TCAMAR_NCCL  
		Set	TI_SITU = 'EXT', CO_TIPO_OPER = @VSCO_TIPO_OPE1,  
			CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()  
		Where CO_EMPR = @ISCO_EMPR  
		AND   CO_UNID_CONC = @ISCO_UNID_CONC  
		AND   NU_AMAR = @ISNU_AMAR   
		AND    FE_AMAR  = @IDFE_AMAR 
	Else
		Update TCAMAR_NCCL  
		Set	TI_SITU = 'ANU', CO_TIPO_OPER = @VSCO_TIPO_OPE1,  
			CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()  
		Where CO_EMPR = @ISCO_EMPR  
		AND   CO_UNID_CONC = @ISCO_UNID_CONC  
		AND   NU_AMAR = @ISNU_AMAR   
		AND    FE_AMAR  = @IDFE_AMAR

	
	If @@error <> 0  
	Begin  
		RollBack Tran SP_TTAMAR_NCCA_D01
		Return  
	End  

	
	/**-----Verifica si es interface en Linea s/n------*/
	Select	@VSST_INTE_BACH = ST_INTE_BACH,  
			@VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER  
	From TMPARA_TESO 
	Where CO_EMPR = @ISCO_EMPR

	/**-----Verifica si se genera asientos Resumidos ------*/	
	Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))      
	From   TMOPRC_RESU t1 , TDTIPO_OPER t2      
	Where  t2.CO_EMPR = @ISCO_EMPR And      
	t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And      
	t1.CO_EMPR = t2.CO_EMPR And      
	t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB   

	/**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/	
    If	@VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND 
		@ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And
		@IDFE_AMAR < @IDFE_ANUL And Month( @IDFE_AMAR ) != Month( @IDFE_ANUL )  
	Begin
			
		/*-----Optiene el Numero de Asiento -----*/				
		EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO 
OUTPUT  
		IF (@@ERROR != 0)      
		Begin  
			RollBack Tran  SP_TTAMAR_NCCA_D01
			Return  
		End  

	End  

	Insert Into TTAMAR_NCCA (CO_EMPR, CO_UNID_CONC, NU_AMAR, FE_AMAR, CO_TIPO_OPER, FE_ANUL, ST_CONT, NU_ASTO, 
CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)  
	Values (@ISCO_EMPR, @ISCO_UNID_CONC, @ISNU_AMAR, @IDFE_AMAR, @VSCO_TIPO_OPE1, @IDFE_ANUL, 'N', @OSNU_ASTO, 
@ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())  
	
	If @@error <> 0  
	Begin  
		RollBack Tran  SP_TTAMAR_NCCA_D01
		Return  
	End  

Commit Tran SP_TTAMAR_NCCA_D01
/*------------------------ Fin ------------------------------*/


GO
